/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CRUD;

import Beans.BeanAgendamento;
import Conexao.ConexaoBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Marcos
 */
public class CRUDAgendamento {

    public Connection conexao;

    public CRUDAgendamento() throws SQLException {
        this.conexao = ConexaoBanco.getConexao();
    }

    public void adiciona(BeanAgendamento BA) throws SQLException {
        String sql = "insert into agendamento(dt_agendamento, cod_paciente, cod_medico, status_agendamento, "
                + "observacao, hora_agendamento, cod_plano_saude)" + "values(?,?,?,?,?,?,?)";        
        //String sql = "insert into cidade     (den_cidade,                                                                        estado)" + "values(?,?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        //stmt.setInt(1, 0);
        stmt.setDate(1, new java.sql.Date(BA.getDt_agendamento().getTime()));
        stmt.setString(2, BA.getCod_paciente());
        stmt.setString(3, BA.getCod_medico());
        stmt.setString(4, BA.getStatus_agendamento());
        stmt.setString(5, BA.getObservacao());
        stmt.setTime(6, new java.sql.Time(BA.getHora_agendamento().getTime()));
        stmt.setInt(7, BA.getCod_plano_saude());
        stmt.execute();
        stmt.close();
    }
    
    public void alteraSecretaria(BeanAgendamento BA) throws SQLException {
        String sql = "update agendamento set dt_agendamento = ?, cod_paciente = ?, cod_medico = ?, "
                + "status_agendamento = ?, observacao = ?, hora_agendamento = ?, cod_plano_saude = ?"
                + " WHERE cod_agendamento = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setDate(1, new java.sql.Date(BA.getDt_agendamento().getTime()));
        stmt.setString(2, BA.getCod_paciente());
        stmt.setString(3, BA.getCod_medico());
        stmt.setString(4, BA.getStatus_agendamento());
        stmt.setString(5, BA.getObservacao());
        stmt.setTime(6, new java.sql.Time(BA.getHora_agendamento().getTime()));  
        stmt.setInt(7, BA.getCod_plano_saude());     
        stmt.setInt(8, BA.getCod_agendamento());     
        stmt.execute();
        stmt.close();
    }
    
    public void alteraMedico(BeanAgendamento BA) throws SQLException {
        String sql = "update agendamento set status_agendamento = ? "
                + " WHERE cod_agendamento = ? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setString(1, BA.getStatus_agendamento());        
        stmt.setInt(2, BA.getCod_agendamento());     
        stmt.execute();
        stmt.close();
    }
    
    public List<BeanAgendamento> getListaAgendamento(String dt_agendamento) throws SQLException {
        String sql = "select agendamento.cod_agendamento, "
                + "agendamento.dt_agendamento, "
                + "agendamento.hora_agendamento, "
                + "agendamento.status_agendamento, "
                + "agendamento.cod_paciente,"
                + "agendamento.cod_medico,"
                + "paciente.nom_pessoa as paciente, "
                + "medico.nom_pessoa as medico, "
                + "paciente.telefone, "
                + "paciente.dt_nasc, "
                + "paciente.idade, "
                + "paciente.sexo, "
                + "cidade.den_cidade, "
                + "paciente.endereco, "
                + "agendamento.observacao,"
                + "agendamento.cod_plano_saude,"
                + "plano_saude.den_plano_saude "
                + "from agendamento left outer join pessoa paciente "
                + "on(agendamento.cod_paciente = paciente.cod_pessoa) "
                + "left outer join pessoa medico "
                + "on (medico.cod_pessoa = agendamento.cod_medico) "
                + "left outer join cidade "
                + "on(cidade.cod_cidade = paciente.cod_cidade)"
                + "left outer join plano_saude "
                + "on (plano_saude.cod_plano_saude = agendamento.cod_plano_saude)"
                + "where agendamento.dt_agendamento = ? ";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, dt_agendamento);
        ResultSet rs = stmt.executeQuery();
        List<BeanAgendamento> ListaAgendamento = new ArrayList<BeanAgendamento>();
        while (rs.next()) {
            BeanAgendamento BA = new BeanAgendamento();
            BA.setCod_agendamento(rs.getInt("cod_agendamento"));
            BA.setDt_agendamento(rs.getDate("dt_agendamento"));            
            BA.setHora_agendamento(rs.getTime("hora_agendamento"));            
            BA.setStatus_agendamento(rs.getString("status_agendamento"));            
            BA.setCod_paciente(rs.getString("cod_paciente"));            
            BA.setCod_medico(rs.getString("cod_medico"));            
            BA.setPaciente(rs.getString("paciente"));            
            BA.setMedico(rs.getString("medico"));            
            BA.setTelefone(rs.getString("telefone"));            
            BA.setDt_nasc(rs.getDate("dt_nasc"));            
            BA.setIdade(rs.getString("idade"));            
            BA.setSexo(rs.getString("sexo"));            
            BA.setCidade(rs.getString("den_cidade"));            
            BA.setEndereco(rs.getString("endereco"));            
            BA.setObservacao(rs.getString("observacao"));            
            BA.setCod_plano_saude(rs.getInt("cod_plano_saude"));            
            BA.setDen_plano_saude(rs.getString("den_plano_saude"));            
            ListaAgendamento.add(BA);
        }
        rs.close();
        stmt.close();
        return ListaAgendamento;
    }
}